home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Gamer Resource Kit / Hardcore Gamer Resource Kit - Disc 2.iso / Pc / U_Z / U2FIX.ZIP / CHANGES.TXT next >
Text File  |  1996-04-25  |  5KB  |  137 lines

  1. Ultima II -- The Fixed Version
  2.  
  3.     Patch by Mike Marcelais, The Moonstone Dragon.
  4.     April 25, 1996
  5.  
  6.  
  7. The Problem:
  8. ------------
  9.  
  10.    When Ultima II was first released, it was released on three floppy
  11. sides:  The Boot Disk, the Player Disk, and the Galactic Disk.  The
  12. last two of these disks held the city and world maps, as well as monster
  13. lists and conversation information for Earth and the other planets.
  14.  
  15.    The names used on these two disks for many of the files were
  16. identical.  When the Ultima I-VI CD was released, all of the files were
  17. merely dumped together into a single directory which caused some of
  18. the files to be overwritten.  Hence, cities, dungeons, and worlds
  19. on the Galactic disk with the same name as a location on Earth are not
  20. available and the Earth Map is used instead.
  21.  
  22. The Solution:
  23. -------------
  24.  
  25.    The data files are identical to the data files used on the original
  26. Apple II version, so I copies the contents of the Apple II Galactic
  27. disk onto my PC (via a Null Modem cable) and renamed all of the fiels
  28. from MONX??, MAPX??, and TLKX?? to MONG??, MAPG??, and TLKG??.
  29.  
  30.    I then looked at the executable itself: ULTIMAII.EXE
  31.  
  32.    There was code left in there to handle disk swapping.  That code
  33. no longer does much, but there was a gap where old code used to reside.
  34. Disassembling that code led to the following discoveries:
  35.  
  36.    On or about location CS:71F1 (all values are hex), there is the code
  37. that prompts you for your Player Disk (after returning from the galactic
  38. view), however the code is skipped completely by a JMP instruction.  I
  39. replaced the code with:
  40.  
  41.     71F1:  B0 58          mov   al,58
  42.     71F3:  E8 15 00       call  720b
  43.     71F6:  90             nop
  44.     71F7:  90             nop
  45.     71F8:  90             nop
  46.  
  47.    58 is ascii 'X'.  I'll get into what 720b does later.  ;-)
  48.  
  49.    On or about location CS:722B, there is the code that prompt for the
  50. Galactic Disk.  That code is replaced with:
  51.  
  52.     722B:  B0 58          mov   al,47
  53.     722D:  E8 DB FF       call  720b
  54.     7230:  90             nop
  55.     7231:  90             nop
  56.     7232:  90             nop
  57.  
  58.    47 is ascii 'G'.
  59.  
  60.    Now, location CS:720b used to contain the message (INSERT GALACTIC DISK)
  61. but that message is no longer used.  Anyway, it gave me a placed to
  62. stick some code that I needed.  The code I put there is:
  63.  
  64.     720B:  2E A2 BA 22    mov   cs:[22ba],al
  65.     720F:  2E A2 CC 22    mov   cs:[22cc],al
  66.     7213:  2E A2 F7 22    mov   cs:[22f7],al
  67.     7217:  C3             ret
  68.     7218:  00 2D 55 44
  69.     721C:  49 43 2D       db    00,"-UDIC-"
  70.  
  71.    The three mov instructions overrite the location in memory where the
  72. name of the MON, MAP, and TLK file is loaded from.  Other code in the
  73. program overrites the number stored at that location.  As you can see,
  74. the Galactic code passes in 'G' for al, and the Player code passes in 'X'
  75. for al.  Hence, all of the normal maps will be loaded as MAPX??, and
  76. all of the Galactic maps will be loaded in as MAPG?? so there is no longer
  77. any name conflicts.
  78.  
  79.  
  80. Installing:
  81. -----------
  82.  
  83.    Copy all of the files from the Ultima I-VI CD in the Ultima II directory
  84. into a directory on your hard drive.  Then copy all of the MAPG, MONG, and
  85. TLKG files in this archive into that directory.  Then run the program
  86. U2PATCH.COM to apply these patches OR manually patch the file ULTIMAII.EXE
  87. using the following templates below:
  88.  
  89.  
  90.      Offset:  73E8
  91.  
  92.    Original:  e8 52 f9 bb 14 00 e8 20  95 eb 06 dd 3d 1b ff 75 
  93.     Replace:                              b0 58 e8 15 00 90 90 
  94.  
  95.    Original:  ef b0 00 a2 4a 00 b0 04  a2 49 00 e8 83 00 c3 eb 
  96.     Replace:  90                                               
  97.  
  98.    Original:  19 dd 28 49 4e 53 45 52  54 20 47 41 4c 41 43 54 
  99.     Replace:           2e a2 ba 22 2e  a2 cc 22 2e a2 f7 22 c3 
  100.  
  101.    Original:  49 43 20 44 49 53 4b 29  8d 00 e8 18 f9 bb 14 00 
  102.     Replace:  00 2d 55       43 2d                             
  103.  
  104.    Original:  e8 e6 94 eb 06 dd 3d 1b  ff 75 ef b0 00 a2 4a 00 
  105.     Replace:           b0 47 e8 db ff  90 90 90                
  106.  
  107.  
  108.    Finally, rename the following files from ???x?? to ???g?? because
  109. these are Galactic Disk files on the CD that were not overwritten by
  110. a Player Disk file:
  111.  
  112.    map:  44, 50, 60, 61, 70, 71, 80, 81, 82, 85, 90, 92, 93
  113.    mon:  44, 50, 60, 61, 70, 71
  114.    tlk:  61, 71, 81, 82, 92, 93
  115.  
  116.    The following mon files need to be copied since they appear in
  117. identical form on both the Player and Galactic Disk:
  118.  
  119.    mon:  10, 15, 30, 40, 45
  120.  
  121.    A batch file named RENGAL.BAT automatically does this automatically.
  122.  
  123.  
  124. CREDITS:
  125. --------
  126.  
  127.    Thanks to `Gametools' for providing an interactive TSR debugger.
  128.  
  129.    Thanks to the Asimov FTP site and comp.emulators.apple2 for
  130. providing an IBM disk image of the Apple II Galactic Disk.
  131.  
  132.    Thanks to Origin for making such an excellent series of games.
  133.  
  134.    And finally, thanks to the Royal Order of the Ultima Dragons
  135. on the Internet for noticing this problem in the first place.
  136.  
  137.